/**********************************
 * @Author: Your Name
 * @LastEditor: Your Name
 * @LastEditTime: 2025-11-07
 * Copyright © 2025 Your Name
 **********************************/

import { request } from '@/utils/http'

// 项目管理相关API
export default {
  // 获取项目列表
  read: (params = {}) => {
    return request({
      url: '/pms/project',
      method: 'GET',
      params,
    })
  },

  // 创建项目
  create: (data) => {
    return request({
      url: '/pms/project',
      method: 'POST',
      data,
    })
  },

  // 更新项目
  update: (data) => {
    return request({
      url: '/pms/project',
      method: 'PUT',
      data,
    })
  },

  // 删除项目
  delete: (id) => {
    return request({
      url: `/pms/project/${id}`,
      method: 'DELETE',
    })
  },

  // 根据ID获取项目
  get: (id) => {
    return request({
      url: `/pms/project/${id}`,
      method: 'GET',
    })
  },

  // 获取项目分类列表
  getProjectCategories: () => {
    return request({
      url: '/pms/project/categories',
      method: 'GET',
    })
  },

  // 获取用户列表（用于选择负责人）
  getUsers: (params = {}) => {
    return request({
      url: '/pms/project/users',
      method: 'GET',
      params,
    })
  },
}

// 设计文件管理相关API
export const designFileApi = {
  // 分页查询设计文件
  pageQuery: (params = {}) => {
    return request({
      url: '/pms/design-file',
      method: 'GET',
      params,
    })
  },

  // 获取设计文件列表
  read: (params = {}) => {
    return request({
      url: '/pms/design-file',
      method: 'GET',
      params,
    })
  },

  // 根据ID获取设计文件
  get: (id) => {
    return request({
      url: `/pms/design-file/${id}`,
      method: 'GET',
    })
  },

  // 创建设计文件
  create: (data) => {
    return request({
      url: '/pms/design-file',
      method: 'POST',
      data,
    })
  },

  // 更新设计文件
  update: (data) => {
    return request({
      url: '/pms/design-file',
      method: 'PUT',
      data,
    })
  },

  // 删除设计文件
  delete: (id) => {
    return request({
      url: `/pms/design-file/${id}`,
      method: 'DELETE',
    })
  },

  // 上传设计文件（包含业务信息）
  upload: (data) => {
    return request({
      url: '/pms/design-file/upload',
      method: 'POST',
      data,
      headers: {
        'Content-Type': 'multipart/form-data' // 让浏览器自动设置边界值
      },
      timeout: 60000 // 设置较长的超时时间，因为文件上传可能需要较长时间
    })
  },

  // 仅上传文件（不包含业务信息，后续可更新）
  uploadFileOnly: (data) => {
    return request({
      url: '/pms/design-file/upload-only',
      method: 'POST',
      data,
      headers: {
        'Content-Type': 'multipart/form-data' // 让浏览器自动设置边界值
      },
      timeout: 60000 // 设置较长的超时时间，因为文件上传可能需要较长时间
    })
  },

  // 获取标签列表
  getTags: () => {
    return request({
      url: '/pms/design-file/tags',
      method: 'GET',
    })
  },

  // 创建设计文件标签
  createTag: (data) => {
    return request({
      url: '/pms/design-file/tags',
      method: 'POST',
      data,
    })
  },

  // 更新设计文件标签
  updateTag: (data) => {
    return request({
      url: '/pms/design-file/tags',
      method: 'PUT',
      data,
    })
  },

  // 删除设计文件标签
  deleteTag: (id) => {
    return request({
      url: `/pms/design-file/tags/${id}`,
      method: 'DELETE',
    })
  },

  // 获取文件类型选项
  getFileTypeOptions: () => {
    return request({
      url: '/pms/design-file/file-types',
      method: 'GET',
    })
  },

  // 扫描文件安全性
  scanFileSecurity: (id) => {
    return request({
      url: `/pms/design-file/${id}/scan`,
      method: 'POST',
    })
  },
  // 获取分享预览URL（默认永久）
  getSharePreviewUrl: (fileId) => {
    return request({
      url: `/secure-preview/file/${fileId}/share-preview-url/permanent`,
      method: 'POST',
    })
  },

  // 获取分享预览URL（支持选择过期时间）
  getSharePreviewUrlWithExpire: (fileId, expireType) => {
    return request({
      url: `/secure-preview/file/${fileId}/share-preview-url/${expireType}`,
      method: 'POST',
    })
  },

  // 获取预览URL（通过Controller统一处理）
  getPreviewUrl: (fileId) => {
    return request({
      url: `/secure-preview/file/${fileId}/preview`,
      method: 'GET',
    })
  },
}

// 设计文件版本相关API
export const designFileVersionApi = {
  // 分页查询设计文件版本
  pageQuery: (params = {}) => {
    return request({
      url: '/pms/design-file-version',
      method: 'GET',
      params,
    })
  },

  // 获取设计文件的所有版本
  getVersionsByFileId: (fileId) => {
    return request({
      url: `/pms/design-file-version/file/${fileId}`,
      method: 'GET',
    })
  },

  // 根据文件ID和版本号获取特定版本
  getVersionByFileIdAndVersionNumber: (fileId, versionNumber) => {
    return request({
      url: `/pms/design-file-version/file/${fileId}/version/${versionNumber}`,
      method: 'GET',
    })
  },

  // 创建新的文件版本
  createVersion: (fileId, data) => {
    return request({
      url: `/pms/design-file-version/file/${fileId}`,
      method: 'POST',
      data,
    })
  },

  // 更新文件版本信息
  updateVersion: (versionId, data) => {
    return request({
      url: `/pms/design-file-version/${versionId}`,
      method: 'PUT',
      data,
    })
  },

  // 删除文件版本
  deleteVersion: (versionId) => {
    return request({
      url: `/pms/design-file-version/${versionId}`,
      method: 'DELETE',
    })
  },

  // 恢复到指定版本
  restoreToVersion: (fileId, versionNumber) => {
    return request({
      url: `/pms/design-file-version/${fileId}/restore/${versionNumber}`,
      method: 'POST',
    })
  },

  // 预览指定版本的文件
  previewVersion: (fileId, versionNumber) => {
    return request({
      url: `/pms/design-file-version/file/${fileId}/version/${versionNumber}/preview`,
      method: 'GET',
    })
  },

  // 获取版本分享预览URL（支持多种过期时间）
  getVersionSharePreviewUrl: (versionId, expireType) => {
    // 参数验证
    if (!versionId || versionId === '{versionId}') {
      console.error('版本ID无效:', versionId)
      throw new Error('版本ID无效: ' + versionId)
    }
    if (!expireType) {
      expireType = 'permanent'
    }
    
    return request({
      url: `/secure-preview/version/${versionId}/share-preview-url/${expireType}`,
      method: 'POST',
    })
  },
}

// 项目分类相关API
export const projectCategoryApi = {
  // 分页查询项目分类
  pageQuery: (params = {}) => {
    return request({
      url: '/pms/project-category',
      method: 'GET',
      params,
    })
  },

  // 获取所有项目分类
  listAll: () => {
    return request({
      url: '/pms/project-category/list-all',
      method: 'GET',
    })
  },

  // 根据ID获取项目分类
  get: (id) => {
    return request({
      url: `/pms/project-category/${id}`,
      method: 'GET',
    })
  },

  // 创建项目分类
  create: (data) => {
    return request({
      url: '/pms/project-category',
      method: 'POST',
      data,
    })
  },

  // 更新项目分类
  update: (data) => {
    return request({
      url: '/pms/project-category',
      method: 'PUT',
      data,
    })
  },

  // 删除项目分类
  delete: (id) => {
    return request({
      url: `/pms/project-category/${id}`,
      method: 'DELETE',
    })
  },
}
